package net.zoneland.zrdp.system.mapper;

import java.util.List;

import net.zoneland.zrdp.system.domain.SysNotice;
import net.zoneland.zrdp.system.domain.SysNoticeComment;
import org.apache.ibatis.annotations.Param;

/**
 * 通知公告表 数据层
 *
 * @author zonevue
 */
public interface SysNoticeMapper {
    /**
     * 查询公告信息
     *
     * @param noticeId 公告ID
     * @return 公告信息
     */
    SysNotice selectNoticeById(Long noticeId);

    /**
     * 查询通知公告new
     *
     * @param noticeId 通知公告new主键
     * @return 通知公告new
     */
    SysNotice selectNoticeByNoticeId(Long noticeId);

    /**
     * 查询公告列表
     *
     * @param notice 公告信息
     * @return 公告集合
     */
    List<SysNotice> selectNoticeList(SysNotice notice);

    /**
     * 导出公告列表
     *
     * @param notice 公告信息
     * @return 公告集合
     */
    List<SysNotice> selectExportNoticeList(SysNotice notice);

    /**
     * 新增公告
     *
     * @param notice 公告信息
     * @return 结果
     */
    int insertNotice(SysNotice notice);

    /**
     * 修改公告
     *
     * @param notice 公告信息
     * @return 结果
     */
    int updateNotice(SysNotice notice);

    /**
     * 批量删除公告
     *
     * @param noticeId 公告ID
     * @return 结果
     */
    int deleteNoticeById(Long noticeId);

    /**
     * 批量删除公告信息
     *
     * @param noticeIds 需要删除的公告ID
     * @return 结果
     */
    int deleteNoticeByIds(Long[] noticeIds);

    /**
     * 根据title 查找对象
     *
     * @param noticeTitle 标题
     * @return 数据表中找到的记录
     */
    SysNotice selectNoticeByTitle(String noticeTitle);

    /**
     * 批量删除公告评论
     *
     * @param noticeIds 需要删除的数据主键集合
     * @return 结果
     */
    int deleteNoticeCommentByNoticeIds(Long[] noticeIds);

    /**
     * 批量新增公告评论（添加从表数据）
     * 注意：这个方法是生成一个长的sql 一次性插入；MySQL 有一个max_allowed_packet参数 默认为4M；所以插入的数据太多会报错
     *
     * @param sysNoticeCommentList 公告评论列表
     * @param noticeId             通知公告的主表id
     * @return 结果
     */
    int batchNoticeComment(@Param("sysNoticeCommentList") List<SysNoticeComment> sysNoticeCommentList, @Param("noticeId") Long noticeId);


    /**
     * 通过通知公告new主键删除公告评论信息
     *
     * @param noticeId 通知公告newID
     * @return 结果
     */
    int deleteNoticeCommentByNoticeId(Long noticeId);
}
